package com.yuanxiao.common.api.entity.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 订单信息
 *
 * @author luozongsheng
 * @email lzs1115@foxmail.com
 * @date 2022-04-10 23:33:17
 */
@ApiModel("OrderInfoDTO")
@Data
public class OrderInfoDTO implements Serializable {
    private Long id;

    //
    @ApiModelProperty("")
    private Long deptId;

    //
    @ApiModelProperty("")
    private String deptIds;

    //操作人类型（会员：member，员工：staff，平台：sys）
    @ApiModelProperty("操作人类型（会员：member，员工：staff，平台：sys）")
    private String creatorType;

    //会员ID
    @ApiModelProperty("会员ID")
    private Long creatorId;

    //操作人名称
    @ApiModelProperty("操作人名称")
    private String creator;

    //创建时间
    @ApiModelProperty("创建时间")
    private Date createTime;

    //更新操作人类型（会员：member，员工：staff，平台：sys）
    @ApiModelProperty("更新操作人类型（会员：member，员工：staff，平台：sys）")
    private String editorType;

    //
    @ApiModelProperty("")
    private Long editorId;

    //更新操作人
    @ApiModelProperty("更新操作人")
    private String editor;

    //更新时间
    @ApiModelProperty("更新时间")
    private Date editTime;

    //订单编号
    @ApiModelProperty("订单编号")
    private String orderCode;

    //商户交易订单号(获取支付信息时使用)
    @ApiModelProperty("商户交易订单号(获取支付信息时使用)")
    private String businessOrderCode;

    //支付订单编号
    @ApiModelProperty("支付订单编号")
    private String payOrderCode;

    //支付订单编号
    @ApiModelProperty("退款单号")
    private String refundingCode;

    //订单标题（根据使用场景传参数）
    @ApiModelProperty("订单标题（根据使用场景传参数）")
    private String title;

    //图标（根据使用场景传参数）
    @ApiModelProperty("图标（根据使用场景传参数）")
    private String icon;

    @ApiModelProperty("状态(cancel：取消，unPay:待支付，unSend：已支付-待出发/待发货，unArrive: 进行中，arrive：待评价/已送达/已到达，finish：已完成，refunding：退款中，refunded：退款完成，refundFail: 退款失败)")
    private String status;

    //支付金额
    @ApiModelProperty("支付金额")
    private BigDecimal orderPrice;

    //退款金额
    @ApiModelProperty("退款金额")
    private BigDecimal refundPrice;

    //原价
    @ApiModelProperty("订单原价")
    private BigDecimal orderOldPrice;

    //优惠价格
    @ApiModelProperty("优惠总价")
    private BigDecimal orderDeductPrice;

    //订单类型(normal:代驾，wine：酒后代驾，commerce：商务代驾，tourism：旅游代驾)"
    @ApiModelProperty("订单类型(normal:代驾，wine：酒后代驾，commerce：商务代驾，tourism：旅游代驾)\"")
    private String orderType;

    //会员ID（需保留，有时候 creatorId 可能是 后台操作人员 创建订单）
    @ApiModelProperty("会员ID（需保留，有时候 creatorId 可能是 后台操作人员 创建订单）")
    private Long memberId;

    //会员名称
    @ApiModelProperty("会员名称")
    private String memberName;

    //预约时间
    @ApiModelProperty("预约时间")
    private Date orderTime;

    //预约时间str
    @ApiModelProperty("预约时间str")
    private String orderTimeStr;

    //备注
    @ApiModelProperty("备注")
    private String des;

    @ApiModelProperty("开始地/发货区域")
    private String fromAreaNames;

    @ApiModelProperty("开始地/发货区域 编码")
    private String fromAreaCodes;

    @ApiModelProperty("开始地/发货区域 详细地址")
    private String fromAddress;

    //收货人
    @ApiModelProperty("开始地/发货区域 联系人")
    private String fromLinkMan;

    //收货人电话
    @ApiModelProperty("开始地/发货区域 联系人电话")
    private String fromLinkPhone;

    @ApiModelProperty("目的地/收货区域")
    private String toAreaNames;

    @ApiModelProperty("目的地/收货区域 编码")
    private String toAreaCodes;

    @ApiModelProperty("目的地/收货区域 详细地址")
    private String toAddress;

    //收货人
    @ApiModelProperty("目的地/收货区域 联系人")
    private String toLinkMan;

    //收货人电话
    @ApiModelProperty("目的地/收货区域 联系人电话")
    private String toLinkPhone;

    //副标题
    @ApiModelProperty("副标题")
    private String subTitle;

    //出发经度
    @ApiModelProperty("出发经度")
    private String fromLongitude;

    //出发纬度
    @ApiModelProperty("出发纬度")
    private String fromLatitude;

    //到达经度
    @ApiModelProperty("到达经度")
    private String toLongitude;

    //到达纬度
    @ApiModelProperty("到达纬度")
    private String toLatitude;

    //支付类别（wxPay:微信支付，aliPay:支付宝，cash：现金）
    @ApiModelProperty("支付类别（wxPay:微信支付，aliPay:支付宝，cash：现金）")
    private String payType;

    @ApiModelProperty("配送：express，自提：selfTake")
    private String logisticsWay;

    //活动状态（进行中：arrive，已完成：finish）
    @ApiModelProperty("活动状态（进行中：arrive，已完成：finish）")
    private String activityStatus;

    //用户活动Id
    @ApiModelProperty("用户活动Id")
    private Long activityId;

    //订单来源{"type":"goods_share","res":"用户【xxx】推荐【xxx】商品","value":"memberId"}
    //涉及特殊订单时候使用，如：团长推荐
    @ApiModelProperty("订单来源")
    private OrderFromDTO fromData;

    //附加信息
    private List<OrderSupplementDTO> supplementList;

    //价格信息
    private List<OrderPriceItemDTO> priceItemList;


}
